package com.dysoft.flesh;

import javax.vecmath.Matrix4f;
import javax.vecmath.Vector3f;

/**
 * @author Sean Micklethwaite
 *         Oct 30, 2010 4:22:30 PM
 */
public interface RenderContext<RendererT extends Renderer.Root> {
	RenderTarget getTarget();

	void pushTarget(RenderTarget target);

	void popTarget();

	RendererT getRenderer();

	void pushTransform();

	void popTransform();

	void translate(int [] v);

	void translate(Vector3f v);

	void transform(Matrix4f m);

	void scale(float [] v);

	void drawRect(int [] topLeft, int [] topRight);

	void pushRenderer(Renderer renderer);

	void popRenderer();

	boolean isRendering();

	int getTransformDepth();
}
